﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace BussinesCosea
{
    public partial class CoseaDirectos : IDisposable
    {

        public List<BusquedaEstadosEmpleado> ObtenBusquedaEstadoEmpleado()
        {
            List<BusquedaEstadosEmpleado> res = new List<BusquedaEstadosEmpleado>();

            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);
                var tpcts = (from tc in db.BusquedaEstadosEmpleados select tc);
                res = tpcts.ToList<BusquedaEstadosEmpleado>();
            }
            catch (Exception ex)
            {
                throw new Exception("Error en ObtenBusquedaEstadoEmpleado: " + ex.Message);
            }

            return res;
        }

        public List<CamposReporteador> ObtenCamposReporteador()
        {
            List<CamposReporteador> res = new List<CamposReporteador>();

            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);
                var psts = (from pst in db.CamposReporteadors select pst);
                res = psts.ToList<CamposReporteador>();
            }
            catch (Exception ex)
            {
                throw new Exception("Error en ObtenCamposReporteador: " + ex.Message);
            }

            return res;
        }
        
        public DataSet ResultadoReporte(List<CamposReporte> listaCampos, string sFiltros = "", int iCuantos = 10, string sFechas = "", string sUbicacion="")
        {
            DataSet ds = new DataSet();
            string sCampos = "";
            string sQuery = "";
            if(iCuantos == 0)
                sQuery = "select {0} from Empleado e inner join SolicitudEmpleo s on e.IdSolicitud = s.IdSolicitud inner join EstadosEmpleado es on e.IdEstadoEmpleado = es.IdEstadoEmpleado left join EmpleadoComplemento ec on e.IdEmpleado = ec.IdEmpleado {1} {2} {3}";
            else
                sQuery = "select top " + iCuantos.ToString() + " {0} from Empleado e inner join SolicitudEmpleo s on e.IdSolicitud = s.IdSolicitud inner join EstadosEmpleado es on e.IdEstadoEmpleado = es.IdEstadoEmpleado left join EmpleadoComplemento ec on e.IdEmpleado = ec.IdEmpleado {1} {2} {3}";
            int iTotal = 0;
            try
            {
                foreach (CamposReporte item in listaCampos)
                {
                    iTotal++;
                    if (iTotal < listaCampos.Count)
                        sCampos += item.Campo1 + ", ";
                    else
                        sCampos += item.Campo1;
                }
                sQuery = string.Format(sQuery, sCampos, sFiltros, sFechas,sUbicacion);

                bdSQLServer bdServer = new bdSQLServer(_cadenaConexion);
                bdServer.bdConecta();

                ds = bdServer.dataSetConsulta(sQuery, "consulta");

                bdServer.bdCierra();

            }
            catch (Exception ex)
            {
                throw new Exception("Error en ResultadoReporte: " + ex.Message);
            }

            return ds;
        }
    }
}



